<?php

namespace app\admin\command;

use think\console\Command;
use think\console\Input;
use think\console\input\Option;
use think\console\Output;
use think\Exception;

// 引入TP的源生数据库类型
use think\Db;

/**
 * 自动确认收货
 * 调用自定义命令行  php think order
 */
class Order extends Command
{
    // 配置命令行的配置信息
    protected function configure()
    {
        // 设置命令的信息
        $this->setName('order')->setDescription('这是一个自动收货的命令');
    }

    // 执行命令
    protected function execute(Input $input, Output $output)
    {
        // 查询数据
        $orderlist = Db::name('order')->where(['status' => 2])->select();

        if(!$orderlist)
        {
            // 返回信息
            $output->writeln('暂无自动收货的订单记录');
            return false;
        }

        // 自动收货
        // 当前时间  订单发货时间(shiptime) - 10/01 + 7天
        // 订单发货时间 超过 7天后 自动发货
        $ids = [];

        // 循环
        foreach($orderlist as $item)
        {
            // 订单发货时间 - 往后7天时间戳
            $shiptime = $item['shiptime'] + 604800;

            // 确认收货
            if(time() >= $shiptime)
            {
                $ids[] = $item['id'];
            }
        }

        if(empty($ids))
        {
            // 返回信息
            $output->writeln('暂无到达7天后自动收货的订单记录');
            return false;
        }

        // 准备更新

        // 打印语句
        // $result = Db::name('order')->where(['id' => ['in', $ids]])->fetchSql()->update(['status' => 3]);


        $result = Db::name('order')->where(['id' => ['in', $ids]])->update(['status' => 3]);

        if($result === FALSE)
        {
            $output->writeln('自动收货失败');
            return false;
        }else
        {
            // 统计数组的长度
            $count = count($ids);

            $output->writeln("已自动收货了 $count 条订单");
            return false;
        }
    }
}